【iOSDC Japan 2024 レポート】Day0「StoreKit 2によるモダンなアプリ内課金」を聞いてきた #iosdc

【iOSDC Japan 2024 レポート】Day0「StoreKit 2によるモダンなアプリ内課金」を聞いてきた #iosdc

Clock Icon2024.08.22

2024年8月22日から24日に開催された「iOSDC Japan 2024」に参加してきた。WWDCが世界的なカンファレンスであるとすれば、iOSDC Japanは日本国内での最大のiOSデベロッパーカンファレンスだ。

この記事では、Day0「StoreKit 2によるモダンなアプリ内課金」についての感想を共有する。

StoreKit 2によるモダンなアプリ内課金

https://fortee.jp/iosdc-japan-2024/proposal/370206f7-82a4-4f7d-800e-995dc58178a6

登壇者

  • 蔀 さん

スライド

https://speakerdeck.com/0si43/storekit-2niyorumodannaapurinei-ke-jin

概要

2024年4月、note iOSアプリはアプリ内課金機能をリリースしました。本セッションでは、StoreKit 2の導入、実装、テストについて説明します。これからアプリ内課金を実装しようとする方にとって、参考になる情報を提供できれば幸いです。
具体的には以下の内容を扱います。

  • noteアプリのポイント課金仕様
  • StoreKit 1とStoreKit 2の比較
  • StoreKit 2による実装
    • async/awaitによる非同期処理の簡略化
    • レシート検証の簡素化
  • テスト方法
    • sandbox環境とTestFlightを使ったテスト
    • StoreKitTestの活用

2024年4月、noteアプリにアプリ内課金が導入された。

これまでアプリ内課金が導入できていなかった理由として、手数料の問題があったそうだ。外部決済でも27%の手数料がかかるため、noteでは手数料を含めて140円で100ポイントを販売し、1ポイント1円として記事を購入できるようにしている。

このセッションでは、StoreKit 1との比較や新しい非同期処理の簡略化、レシート検証の改善点、StoreKit 2の導入から実装、テスト方法までが詳細に解説された。

また、課金アイテムのIDが開発アカウントに紐付いている全アプリで共通だったため、本番アプリでそのIDが登録できなくなった事例も紹介された。質疑応答では、開発アカウントを通じてサポートに連絡すれば、当該のIDの記録を削除してもらえるという知見も共有された。

こう思った

少し昔の話だが、2022年9月13日にリリースされたXcode 14.0で、StoreKit 1を使っている際にSandbox環境でリストアができない不具合に遭遇したことがある。

https://zenn.dev/ch3cooh/scraps/5a907126170634

この不具合が修正されるまでにはXcode 14.1のリリースを待つ必要があった。この経験から、AppleがStoreKit 1のメンテナンスにあまり力を入れていないと感じ、それ以降はStoreKit 2やRevenueCat SDKを使用するようになった。

本セッションでも紹介されたように、StoreKit 1では非同期処理の煩雑さやレシート検証の複雑さが課題だったが、StoreKit 2ではこれらの問題が大幅に解消された。Swiftのasync/awaitで非同期処理が扱えるようになったことで、実装が容易になり、コードの可読性も向上した点が特に嬉しかった。

このセッションでは、新たにStoreKitTestについて学んだ。以前はシミュレータで任意のエラーを返す用途にしか使えないと思っていたが、課金処理のユニットテストに利用できることを知った。これからは積極的に活用していきたい。

個人開発のアプリではRevenueCat SDKを使用してサブスクリプション課金を一本化する予定だが、今後アイテム課金を実装する際にはStoreKit 1ではなくStoreKit 2を推す予定だ。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.